package de.hauschild.gmltracer.tracer;

import java.util.List;

import org.apache.commons.math.geometry.Vector3D;

/**
 * A {@link Renderer} transforms the given scene into an image.
 * 
 * @author Klaus Hauschild
 * @since 1.0.0
 */
public interface Renderer {

  /**
   * Renders the scene into an image.
   * 
   * @param ambientLightIntensity
   *          the ambient light intensity
   * @param lights
   *          the lights
   * @param scene
   *          the scene
   * @param traceDepth
   *          the trace depth
   * @param fieldOfView
   *          the field of view
   * @param width
   *          the width
   * @param height
   *          the height
   * @param outputFileName
   *          the output file name
   */
  void render(final Vector3D ambientLightIntensity, final List<Light> lights, final Shape scene, final int traceDepth,
      final double fieldOfView, final int width, final int height, final String outputFileName);
}
